package com.guigu.gulicommon.annotations;

import com.guigu.gulicommon.annotations.impl.CheckEnumParamImpl;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 枚举参数校验注解
 *
 * @author 陈俊杰
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = CheckEnumParamImpl.class)
public @interface CheckEnumParam {
    Class<? extends Enum<?>> enumClass(); // 指定枚举类

    String message() default "{tag}应为[{enumDescriptions}]中的任意一种"; // 默认错误消息

    String tag() default ""; // 新增的tag属性，默认为空字符串

    Class<?>[] groups() default {}; // 分组

    Class<? extends Payload>[] payload() default {}; // 附加负载
}
